gusucode.com > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM源码程序 > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM\Classification_OSU_SVM.m
% 支持向量机用于多类模式分类 - 必须选择最优参数 Gamma,C % 工具箱:OSU_SCM3.00 % 使用平台:Matlab6.5 % 作者:陆振波,海军工程大学 % 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页 % 电子邮件:luzhenbo@sina.com % 个人主页:luzhenbo.88uu.com.cn clc clear close all %--------------------------------------------------- % 产生训练样本与测试样本,每一列为一个样本 n1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2]; x1 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)]; % 特别注意:这里的目标与神经网络不同 n2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2]; x2 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)]; % 特别注意:这里的目标与神经网络不同 xn_train = n1; % 训练样本 dn_train = x1; % 训练目标 xn_test = n2; % 测试样本 dn_test = x2; % 测试目标 %--------------------------------------------------- % 参数设置 Samples1 = xn_train; Labels1 = dn_train; Samples2 = xn_test; Labels2 = dn_test; Gamma = 1; C = 1; %--------------------------------------------------- % 训练与测试 % 训练 % 输出参数即是训练结果,其物理意义相当于网格结构参数,用于测试及新样本识别时的输入 % 这里使用 RbfSVC 函数训练,还可以使用 LinearSVC PolySVC 等函数来训练 [AlphaY, SVs, Bias, Parameters, nSV, nLabel] = ... RbfSVC(Samples1, Labels1, Gamma, C); % 测试 [ClassRate, DecisionValue, Ns, ConfMatrix, PreLabels] = ... SVMTest(Samples2, Labels2, AlphaY, SVs, Bias,Parameters, nSV, nLabel); %--------------------------------------------------- % 输出参数 % ClassRate - 正确分类率, 1x1; % DecisionValue - 判别函数的输出(仅对2类问题有效), 1xN; % Ns - 每一类的样本数, 1x(L+1), 或 1xL;当为1x(L+1)时,最后一个元素不属于任何一类 % ConfMatrix - 错判矩阵 (L+1)x(L+1), or LxL, 这里 ConfMatrix(i,j) = P(X in j| X in i); % 当为 (L+1)x(L+1) 时,最后一行和最后一列是那些不属于任何一类的样本 % PreLabels - 实际测试输出, 1xN. %--------------------------------------------------- % 结果统计 Result = ~abs(PreLabels-Labels2) % 正确分类显示为1 Percent = sum(Result)/length(Result) % 正确分类率